package com.ling.springbootinit.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import java.io.File;

/**
 * 全局跨域配置
 *
 */
@Configuration
public class CorsConfig implements WebMvcConfigurer {



    /**
     * 允许跨域
     */
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        // 覆盖所有请求
        registry.addMapping("/**")
                // 允许发送 Cookie
                .allowCredentials(true)
                // 放行哪些域名（必须用 patterns，否则 * 会和 allowCredentials 冲突）
                .allowedOriginPatterns("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .exposedHeaders("*");
    }


    /**
     * 加载静态资源，需要使用虚拟路径进行映射代替本地的绝对路径  详细可参考 WebConfig.java
     * 参考：https://blog.csdn.net/xiaoxiao48/article/details/106281001
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        /*
         * 资源映射路径
         * addResourceHandler:访问映射路径
         * addResourceLocations:资源绝对路径
         */
        // 文件上传路径
        registry.addResourceHandler("/upload/**").addResourceLocations("classpath:/media/"); //这个也是正确的。
        registry.addResourceHandler("/pic/**").addResourceLocations("classpath:/picture/"); //这个也是正确的。
        WebMvcConfigurer.super.addResourceHandlers(registry);
        //正确的访问路径：http://localhost:8101/api/upload/16880.txt   http://localhost:8101/api/upload/16880.mp3

    }
}
